{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 07\n",
    "\n",
    "# 平面两点之间距离\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ad0e872-a325-4368-8639-1adf0f409996",
   "metadata": {},
   "source": [
    "这段代码使用Matplotlib在二维平面上绘制了线段及其中点，展示了点$A$、点$B$和中点$M$的坐标关系。具体过程如下：\n",
    "\n",
    "1. **定义点$A$和点$B$的坐标**：点$A$的坐标为$(-4, 6)$，点$B$的坐标为$(5, -6)$。\n",
    "\n",
    "2. **计算中点$M$的坐标**：通过中点公式得到点$M$的坐标。中点公式为：\n",
    "   $$\n",
    "   x_M = \\frac{x_A + x_B}{2}, \\quad y_M = \\frac{y_A + y_B}{2}\n",
    "   $$\n",
    "   将点$A$和$B$的坐标代入，得到中点$M$的坐标$(x_M, y_M) = (0.5, 0)$。\n",
    "\n",
    "3. **绘制点和线段**：在二维坐标系中绘制点$A$、$B$和中点$M$，并用线段连接$A$和$B$。绘制点的标记“x”显示为较大尺寸，以便突出显示。\n",
    "\n",
    "4. **标记点的标签和坐标**：在图中标记出点$A$、$B$和$M$的名称和坐标，如“A$(-4, 6)$”、“B$(5, -6)$”和“M$(0.5, 0)$”。\n",
    "\n",
    "5. **坐标轴设置**：在$x$轴和$y$轴分别绘制通过原点的基准线，并将刻度范围设置为$[-8, 8]$。为了增强可读性，图形设置了单位比例和浅灰色虚线网格，同时隐藏了坐标轴的边框线。\n",
    "\n",
    "最终图形展示了点$A$和$B$之间的线段及其中点的坐标关系，清晰地呈现了线段在平面上的位置和对称性。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45924401-cdb1-42e3-9aea-1e1229b0f2a9",
   "metadata": {},
   "source": [
    "## 导入所需库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ea42672a-43d7-4c53-bd01-b183a2dae1d5",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt  # 导入matplotlib库，用于绘图\n",
    "import numpy as np  # 导入numpy库，用于数值计算"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a434c62-84dd-4420-8de7-184d2dac13c2",
   "metadata": {},
   "source": [
    "## 定义点A和点B的坐标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "846fa1f1-65fa-47ac-ab1d-b8929e94ba14",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_A = -4  # 点A的x坐标\n",
    "y_A = 6   # 点A的y坐标\n",
    "\n",
    "x_B = 5   # 点B的x坐标\n",
    "y_B = -6  # 点B的y坐标"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6edaa413-d033-4966-abfa-c33900e01c9e",
   "metadata": {},
   "source": [
    "## 计算线段AB的中点M的坐标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6698817f-df84-462c-94d4-e903fc4fa3dd",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_M = (x_A + x_B) / 2  # 中点M的x坐标\n",
    "y_M = (y_A + y_B) / 2  # 中点M的y坐标"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4af5eb47-78b5-4460-b073-1dfd7488aaf0",
   "metadata": {},
   "source": [
    "## 创建图形"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6d16e78a-b7b5-4161-ab4a-b608695b1c0c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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kkp3MvNnxnLbbDa88cYbaN++fczzFQBg/fr1Uc93AIDp06ejXbt26NWrF1588UXFhxWDWb58OXr27InrrrsORUVF6NatG15++eWI7Xr37o0NGzYoeo5kXkchenbdu3fH5s2bVXG53W5VPPXlJTe50wVR65JKdzLX3wW7P/roI/nkI7vdjmbNmuGjjz6CVhu7v7J37140b9484v4HH3wQPXv2hMlkwtatW3Hbbbfh8OHDuOeee+LKFYs9e/Zg3rx5mDhxIm6++Wbs3LkTN998M4xGI6655hp5uxYtWmD//v3w+/215o9GMq+lED07NcmUQXByk7u+EbUuqXaHr38X7/yZwe5BgwahvLwc5eXl+OqrrzBkyBBccMEF2Lcvdk/R6XTCZDJF3H/PPffgrLPOQu/evXHbbbfhgQcewGOPPRZXJgDYsGEDcnJy5Nsbb7wBAPD7/ejevTtmz56NPn364F//+hcmTJiAefPmRfxdfr9f0TyXybyOWdfYBaay4eElN7lT6eaNqHVJB3fw+nfxzp8Z7LZarWjfvj3at2+P3r17Y8GCBbDb7VEPEwbIy8vD0aNH63T37dsXf/75J3777bc6MwFAz5495Ya3vLwcF110EYCTJwt27tw5xN2pU6eIk2iOHDkCi8WiqOFK5nUU4jCmmtB0YeTOVDdvRK1LurgTnT+zNndgthqn0xlzm27duuH111+v071t2zaYTKa4T1Yxm81o3759xP0DBgzAjh07Qtw7d+5EYWHo37h9+3Z07949rueqLXeiZF1jRxNBkztT3bwRtS7p4k50/C64F+NyuXDo0CEAJ0/xf+6552Cz2XDhhRfGfPzQoUNx55134ujRo2jUqBEA4MMPP8ShQ4fQoUMHmM1mfPfdd7j77rtxww03wGg01vk31MYtt9yC/v3746GHHsKoUaOwe/duzJ8/H/Pnzw/ZbsOGDRgyZIii50hq/82yDLvdzs1LbnKn0m2z2RgABoDZbDbV/aLWJd3cH995NfuxYzH7sWMx+2RUvzrd48aNk19XAKxBgwasV69e7N13363zufr27ctefPFF+edPPvmEde3aleXk5DCLxcK6dOnC5s6dyzweT8jjALDS0tKE/i7GGPvwww9Z586dmdFoZMXFxWz+/Pkhvz9w4ACTJIlVVlYm7GYsuf23MBNBq0Uy083U5QUyY7ojcovppunC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v59LNoIgCCJzEOLSg379+qFRo0YYN24cvv32W+zcuRO33347KioqMGLEiFTHIwiCINIcIRq7vLw8fPrpp7DZbDj33HPRs2dPbNy4ER988AHOPPPMuD1GoxH3338/l0Ob5CZ3qt28/eQmt8huDWOMqZ6IIAiCINIIIXp2BEEQBJEM1NgRBEEQGQ81dgRBEETGQ40dQRAEkfFkbWOn1pJB4axduxYajSbqraysTIXkwMcff4w+ffrAbDYjLy8Po0ePVsXbpk2biMyxLthXisvlQteuXaHRaFBeXq6a96KLLkLr1q1hMpnQrFkzjB07FgcPHkzau3fvXowfPx5t27aF2WxGu3btcP/998PtdquQGpg9ezb69+8Pi8WCU045JSnXCy+8gLZt28JkMqFHjx7YsGGDKhnXr1+PCy+8EM2bN4dGo8GyZctU8ZaUlKBXr15o0KAB8vPzcfHFF2PHjh2quAFg3rx5OOOMM9CwYUM0bNgQ/fr1wyeffKKaP0BJSQk0Gg2mTZumim/mzJkRn8NEJruvi6qqKlx99dVo0qQJLBYLunbtiq1btybtjbb/0Gg0mDRpUtJur9eLe+65R/4cnnbaaXjggQcSus46axs7tZYMCqd///749ddfQ27//Oc/0aZNG/Ts2TPp3O+99x7Gjh2L6667Dt9++y2++OILXHnllUl7AzzwwAMh2e+55x7V3AAwffp0NG/eXFUnAAwaNAhvv/02duzYgffeew+7d+/GZZddlrT3559/ht/vx0svvYQffvgBTz31FF588UXcddddKqQG3G43xowZg4kTJybleeuttzBt2jTcfffd2LZtG/7+97/jggsuwP79+5POaLfbceaZZ+K5555L2hXMunXrMGnSJGzevBmrVq2C1+vFkCFDVFv4s2XLlnj44YexZcsWbNmyBeeeey5GjRqFH374QRU/AJSVlWH+/Pnyaixqcfrpp4d8Dr///ntVvEePHsWAAQMgSRI++eQT/Pjjj3jiiSeS/qIFnKxFcOZVq1YBAMaMGZO0+5FHHsGLL76I5557Dj/99BMeffRRPPbYY3j22Wfjl6g+eZkA/P777wwAW79+vXzfn3/+yQCw1atXq/pcbreb5efnswceeCBpl8fjYS1atGCvvPKKCskiKSwsZE899RQXN2OMrVixghUXF7MffviBAahzIu9k+OCDD5hGo2Fu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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()  # 创建图形和坐标轴对象\n",
    "\n",
    "## 绘制点A和点B\n",
    "plt.plot(x_A, y_A, 'x', markersize=12)  # 绘制点A\n",
    "plt.plot(x_B, y_B, 'x', markersize=12)  # 绘制点B\n",
    "\n",
    "## 绘制线段AB和中点M\n",
    "x_points = [x_A, x_B, x_M]  # 线段AB和中点M的x坐标\n",
    "y_points = [y_A, y_B, y_M]  # 线段AB和中点M的y坐标\n",
    "\n",
    "plt.plot(x_points, y_points)  # 绘制线段AB\n",
    "plt.plot(x_points, y_points)  # 重复绘制线段AB以确保显示\n",
    "\n",
    "## 标记点A、B和M\n",
    "labels = ['A', 'B', 'M']  # 定义标签列表\n",
    "plt.plot(x_points, y_points, 'x')  # 绘制点A、B和M的标记\n",
    "\n",
    "for label, i, j in zip(labels, x_points, y_points):\n",
    "    plt.text(i, j + 0.5, label + ' ({}, {})'.format(i, j))  # 添加标签和坐标\n",
    "\n",
    "## 设置坐标轴标签和刻度\n",
    "plt.xlabel('x')  # 设置x轴标签\n",
    "plt.ylabel('y')  # 设置y轴标签\n",
    "plt.axhline(y=0, color='k', linestyle='-')  # 绘制y=0的水平线\n",
    "plt.axvline(x=0, color='k', linestyle='-')  # 绘制x=0的垂直线\n",
    "plt.xticks(np.arange(-8, 8 + 1, step=1))  # 设置x轴刻度范围为-8到8，步长为1\n",
    "plt.yticks(np.arange(-8, 8 + 1, step=1))  # 设置y轴刻度范围为-8到8，步长为1\n",
    "plt.axis('scaled')  # 设置坐标轴比例，使x和y轴单位长度一致\n",
    "\n",
    "## 设置坐标轴范围和样式\n",
    "ax.set_xlim(-8, 8)  # 设置x轴的显示范围为-8到8\n",
    "ax.set_ylim(-8, 8)  # 设置y轴的显示范围为-8到8\n",
    "ax.spines['top'].set_visible(False)  # 隐藏顶部边框\n",
    "ax.spines['right'].set_visible(False)  # 隐藏右侧边框\n",
    "ax.spines['bottom'].set_visible(False)  # 隐藏底部边框\n",
    "ax.spines['left'].set_visible(False)  # 隐藏左侧边框\n",
    "\n",
    "## 添加网格\n",
    "ax.grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5])  # 添加虚线网格"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
